﻿using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FM.Common;
using FM.Events;
using FM.录音.Events;
using Microsoft.Practices.Prism.Mvvm;
using Microsoft.Practices.Prism.PubSubEvents;

namespace FM.录音.ViewModels
{
    public class 状态栏ViewModel : BindableBase
    {
        private readonly IDictionary<Enum状态栏, 状态栏Data1> 属性列表;
        private readonly IEventAggregator 新闻部;
        private bool _is全屏;

        public 状态栏ViewModel()
        {
            新闻部 = 小冰.新闻部;

            属性列表 = new ConcurrentDictionary<Enum状态栏, 状态栏Data1>();

            事件订阅();

            初始化();
        }

        public 状态栏Data1 提示 { get; set; }
        public 状态栏Data1 授权 { get; set; }
        public 状态栏Data1 录音状态 { get; set; }

        private void 初始化()
        {
            提示 = new 状态栏Data1(Enum状态栏.提示, "初始化");
            授权 = new 状态栏Data1(Enum状态栏.授权, "初始化");

            属性列表.Add(Enum状态栏.提示, 提示);
            属性列表.Add(Enum状态栏.授权, 授权);
        }

        private void 事件订阅()
        {
            新闻部.GetEvent<状态栏更新Event>().Subscribe(状态栏更新Action, true);

            新闻部.GetEvent<全屏Event>().Subscribe(x => Is全屏 = x, true);
        }

        public bool Is全屏
        {
            get { return _is全屏; }
            set { SetProperty(ref _is全屏, value); }
        }
       

        private void 状态栏更新Action(状态栏Data1 obj)
        {
            if (属性列表.ContainsKey(obj.标识))
            {
                属性列表[obj.标识].数据 = obj.数据;
            }
        }
    }
}
